package com.dd.stack.jvm.io;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;

/**
 * @Author liuxianmeng
 * @CreateTime 2025/9/9 21:51
 * @Description 输入输出练习
 */
public class InputOutputPractice {
    public static void main(String[] args) throws IOException {
        BufferedReader br3 = new BufferedReader(new InputStreamReader(System.in));
        String curLine;

        // 读取总人数
        curLine = br3.readLine();
        Integer N = Integer.parseInt(curLine);
        // 存储所有的病人
        HashSet<Integer> patienceSet = new HashSet<>();
        // 读取病号
        curLine = br3.readLine();
        String[] split = curLine.split(",");
        for (String str : split) {
            patienceSet.add(Integer.parseInt(str));
        }
        // 最终需要体检的人数
        int rst = 0;

        // 读取交叉信息
        for(int i = 0; i < N; i++) {
            curLine = br3.readLine();
            String[] info = curLine.split(",");
            // 读取交叉信息 如果是反斜线元素则跳过 如果是0则跳过
            for(int j = 0; j < N; j++) {
                int rowNum = i;
                int colNum = j;
                if(rowNum != colNum && info[j].equals("1")) {
                    if(patienceSet.contains(rowNum) && !patienceSet.contains(colNum)) {
                        // 假如病人列表
                        patienceSet.add(colNum);
                        // 需要体检的人数 + 1
                        rst++;
                    } else if(patienceSet.contains(colNum) && !patienceSet.contains(rowNum)) {
                        // 假如病人列表
                        patienceSet.add(rowNum);
                        // 需要体检的人数 + 1
                        rst++;
                    }
                    // 其他情况不符合条件
                }
            }
        }

        System.out.println(rst);
    }
}
